A little bit more of my work last year on Hellbound: a collection of Houdini Python scripts that helped us iterate faster on the generated levels and handled the export/import pipeline from Houdini to our custom engine Perry.
The lighting script handled the creation of lights in Houdini for any generated level. We decided to spawn all the lights with Python in the levels so we could automatically export all of them together with the geometry and textures in the gltf scenes. My main resource for the light script was this SideFX forum post which I used as a base for my shelf tool: https://www.sidefx.com/forum/topic/46828/
Pedro Amaro Alpiarça dos Santos, Tech Art lecturer, offered great insight and feedback, as well as code examples of how to point lights with the scripts. (https://www.linkedin.com/in/probiner/)
To be able to quickly iterate through already created levels, I created two scripts for saving and loading the parameters of a node to/from a json file. When creating the levels for the game, I saved all of the parameters in a json level library.
The exporting was handled by the range gltf exporter python shelf tool. GLTF was the preferred format that we wanted to export levels in since they could hold model, texture/material and light information in one scene, and that is how the levels were being loaded up in engine. However, the issue we encountered was not being able to export multiple levels at the same time. To avoid manually loading parameters from the parameter library and exporting every single level using a gltf rop node, I created a python shelf tool that would automatically export all levels from a user specified range. For every level in the range, the script works by setting the new parameters from the json library, re-generating the lights, and then exporting the Houdini scene as a gltf in the engine's levels folder.
This marked my first experience of using Python, but it was definitely a fun and interesting challenge that I learned a lot from, both about Python as well as improving pipelines as a technical artist and bridging the gap between art and programming. Since I was unfamiliar with a lot of the syntax, but I had previous knowledge in VEX and C++, I used ChatGPT for Python syntax and faster iteration.
Follow the link to play the game: https://buas.itch.io/hellbound
I would like to give special thanks to the Bermuda Studio art team:
Angel Dimovski - Lead Artist & Environment Artist - responsible for the modular wall pieces, railings, and the environment props scattered through the levels, as well as visuals & lighting direction
https://www.artstation.com/angel_dimovski
Weronika Bączkowska - Technical Artist - responsible for the floor, lava & ornament texturing, as well as the lava pool and level edge stone system in Houdini
https://www.artstation.com/weriberry
Levon Dyulgeryan - VFX & SFX
https://www.artstation.com/levon_dyulgeran
Nikola Minchev - Character Artist
https://www.artstation.com/kolo12
As well as our programmers and designers, for which you can check out the full credits at https://buas.itch.io/hellbound/devlog/546689/full-credits
Video detailing the level generation and export pipeline in Houdini using the Python scripts
Small demonstration of the save/set parameters tool on a box node in Houdini